/**
 * Created by LiuJie on 2016/10/17.
 * alert组件 基于sweetAlert插件封装
 *调用方式：$.messageExt.alert(title,text,type,fn);
 */
;(function ($,window,undefined) {
    var MessageExt = function () {
        var defaults = {
            title:"系统提示",//标题，必填项
            text:"暂无提示信息！",//文本,描述信息
            type:"info",//alert的类型，有四种："warning", "error", "success" 和 "info"
            confirmButtonText:'确 认',//确认按钮文本，设置为true时默认为OK
            cancelButtonText:'取 消',//取消按钮文本
            showCancelButton:false,//允许显示取消按钮，设置为true
            closeOnConfirm:true,
            allowOutsideClick:false,//允许点击alert弹窗以外的区域关闭
            confirmButtonColor:'#0ae',//设置确认按钮的颜色(HEX值)
            imageUrl:null,// 添加自定义图片到警告框上。必须是图片的完整路径。
            imageSize:'60x60',//当设定图片的路径后，你可以设定图片的大小，格式为两个数字中间带个"x"符号。
            timer:null//alert自动关闭时间 ，单位ms
        };
        /**
         * 初始化alert/confirm弹框
         * @param options
         */
        function initAlert(options) {
            defaults.title = options.title ? options.title : defaults.title;
            defaults.text = options.text ? options.text : defaults.text;
            defaults.confirmButtonText = options.btns && options.btns.length  ? options.btns[0] : defaults.confirmButtonText;
            defaults.cancelButtonText = options.btns && options.btns.length && options.btns[1]  ? options.btns[1] : defaults.cancelButtonText;
            if (options.type) {
                defaults.type = options.type ? options.type : defaults.type;
                if(options.isPrompt){
                    defaults.closeOnConfirm = false;
                }
                showAlert(defaults, options.fn);
            } else {
                defaults.type = "warning";
                defaults.showCancelButton = true;
                if(!options.isPrompt){
                    defaults.closeOnConfirm = false;
                }
                showConfirm(defaults, options.fn)
            }
        }
        /**
         * 展示alert框
         * @param setting
         * @param fn
         */
        function showAlert(setting,fn) {
            sweetAlert(setting,function () {
                try {
                    if($.isFunction(fn)){
                        fn();
                    }
                }catch (e){
                    throw new Error(e);
                }
            });
        }

        /**
         * 显示确认弹框
         * @param setting
         * @param fn
         */
        function showConfirm(setting,fn) {
            sweetAlert(setting,function (isConfirm) {
                try {
                    if($.isFunction(fn)){
                        fn(isConfirm);
                    }
                }catch (e){
                    throw new Error(e);
                }
            });
        }
        return {
            /**
             * 初始化alert/confirm弹框
             * @param options
             */
            "init": function (options) {
                initAlert(options);
            }
        }
    };
    $.messageExt={
        "alert":function (title,text,type,fn,isPrompt) {
            var option = {};
            option.title = title;
            option.text = text;
            option.type = type;
            option.fn = fn;
            option.isPrompt = isPrompt ? isPrompt : false;
            new MessageExt().init(option);
        },
        "confirm":function (title,text,fn,isPrompt,btns) {
            var option = {};
            option.title = title;
            option.text = text;
            option.fn = fn ? fn :null;
            option.isPrompt = isPrompt ? isPrompt : false;
            option.btns = btns;
            new MessageExt().init(option);
        }
    };

})(jQuery,window,undefined);
